#ifndef GLOBALS_H
#define GLOBALS_H

#include <QString>
#include <QVector>
#include <QObject>

//#if __cplusplus <= 199711L
//#error "The compiler used does not support C++11 standard."
//#endif

#define QVECTOR_EMPTY(TYPE) QVector<TYPE>()

#define R(TYPE,NAME) private:\
    TYPE _##NAME;\
    public:\
    inline TYPE NAME() const { return _##NAME; }

#define W(TYPE,NAME) private:\
    TYPE _##NAME;\
    public:\
    void set_##NAME(const TYPE &value) { _##NAME = value; }

#define RW(TYPE,NAME) private:\
    TYPE _##NAME;\
    public:\
    inline TYPE NAME() const { return _##NAME; } \
    void set_##NAME(const TYPE &value) { _##NAME = value; }

#define ENUM_CPP(NAME)\
    QVector<QString> NAME::STR = QVector<QString>();\
    QVector<__##NAME##_vals__> NAME::VALS = QVector<__##NAME##_vals__>();

#define P(...) __VA_ARGS__

#endif // GLOBALS_H
